#ifndef __NFASTATE__

#define __NFASTATE__

#include<vector>
#include<cstddef>

class NFAState {
	
	std::vector<bool> includes;
	
	void includeState(unsigned);
	
	public:
	NFAState();
	NFAState(unsigned);
	NFAState(NFAState const &);
	~NFAState();

	bool includesState(unsigned) const;
	bool isAccepting() const;
	size_t size() const {return includes.size();}
	NFAState operator+(NFAState const &);
	NFAState operator+(unsigned);
	NFAState & operator+=(NFAState const &);
	NFAState & operator+=(unsigned);
	NFAState & operator=(NFAState const &);
};

#endif
